package com.game.frame.GameFrame;

import com.game.frame.GameFrame.GameFrameMain.GameKeyListener;
import com.game.frame.GameFrame.GameFrameMain.Hero;
import com.game.frame.GameFrame.GameFrameMain.GameWindow;

import javax.swing.*;

/**
 * 游戏开始界面类，继承自 JFrame，并实现了 Runnable 接口
 * 负责创建游戏窗口、角色，并处理键盘输入以控制角色移动和攻击
 */
public class BeginGameFrame extends JFrame implements Runnable {
    // 当前背景
    BackGround nowBackGround;
    // 玩家角色
    private Hero player;
    // 游戏窗口
    private GameWindow game;
    // 标记左箭头是否被按下
    private boolean isLeftPressed = false;
    // 标记右箭头是否被按下
    private boolean isRightPressed = false;

    /**
     * 构造方法，用于初始化游戏界面和角色
     */
    public BeginGameFrame() {
        // 创建游戏窗口
        game = new GameWindow(900, 600, "游戏页面");
        game.setBackground(1);

        // 创建角色
        player = game.getMainCharacter();

        // 创建一个定时器来处理持续移动
        Timer moveTimer = new Timer(5000, e -> {
            if (isLeftPressed) {
                player.setStatus(3);
            } else if (isRightPressed) {
                player.setStatus(4);
            }
        });
        moveTimer.start();

        // 显示窗口
        game.show();
    }

    /**
     * 实现 Runnable 接口的方法，用于线程运行
     * 目前该方法内部为空，未实现具体逻辑
     */
    @Override
    public void run() {
        while (true) {
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 获取玩家角色的方法
     *
     * @return 返回玩家角色对象
     */
    public Hero getPlayer() {
        return player;
    }

    /**
     * 获取游戏窗口的方法
     *
     * @return 返回游戏窗口对象
     */
    public GameWindow getGame() {
        return game;
    }
}
